window.onload = function () {
    var join_btn = $id('join'),// 录入按钮
        name = $id("name"),//需要录入的产品名称
        price = $id("price"),//需要录入的产品单价
        total = $id('total'), // 需要满足的总价
        getResult = $id('result');//获取组合结果
    // 点击录入
    join_btn.onclick = function () {
        if (name.value.length < 1 || price.value.length < 1) {
            alert('信息录入不完整');
        } else {
            // 录入信息
            joinArr(name, price);
        }
    }
    //  获取组合列表
    getResult.onclick = function () {
        var total_value = total.value; // 满减要求
        // console.log(product_arr); // 产品信息
        // 获取组合列表
        if (total_value && total_value.length && total_value > 0) {
            if (product_arr.length > 1) {
                showName = [];
                showTotal = [];
                copyShow = [];
                const resNum = $id('itemNum').value;
                getList(product_arr, total_value, resNum);
            } else {
                alert('至少要录入两个产品信息哦')
            }
        } else {
            alert('信息不完整');
        }
    }
}
// 获取id元素
function $id(id) {
    return document.getElementById(id);
}
// 录入信息
var product_arr = []; // 产品信息
function joinArr(name, price) {
    var product = {
        name: name.value,
        price: price.value
    }
    product_arr.unshift(product);
    name.value = '';
    price.value = '';
    // 展示录入的产品
    showProductList(product_arr);
}
//  展示录入的产品
function showProductList(productArr) {
    let html = '',
        product_html = $id("product_content");//录入信息的展示列表区
    if (productArr.length) {
        for (var i = 0; i < productArr.length; i++) {
            html += '<tr>' +
                '<td>' + productArr[i].name + '</td>' +
                '<td>' + productArr[i].price + '</td>' +
                '<td>' +
                '<input type="button" onclick="deleteProduct(' + i + ')" value="删除">' +
                '</td>'
            '</tr>';
        }
    } else {
        html = '<tr>' +
            '<td>空</td>' +
            '<td>空</td>' +
            '<td></td>'
        '</tr>';
    }
    product_html.innerHTML = html;
}
// 删除单个商品
function deleteProduct(i) {
    product_arr.splice(i, 1);
    showProductList(product_arr);
}
// 获取组合列表
var showName = []; // 符合条件的产品名
var showTotal = []; // 符合条件的总价
var copyShow = []; // 拷贝符合条件的数组
function getList(arr, total, resNum, num) {
    // total 满减价格
    // arr 产品数组
    // resNum 展示多少组合
    // num 组合有多少项组成
    if (!resNum) { //设置默认展示多少组合
        resNum = 5;
    }
    if (!num) { // 设置默认有两项组成 
        num = 2;
    }
    let arrName = []; // 产品的名称数组
    let arrPrice = []; // 产品的单价数据
    // 拆分产品信息，保存至不同数组
    for (let i = 0; i < arr.length; i++) {
        arrName.push(arr[i].name);
        arrPrice.push(arr[i].price);
    }
    // 得到符合条件的数组
    for (let i = 0; i < arrPrice.length; i++) {
        // j=i 解决重复计算问题
        for (let j = i; j < arrPrice.length; j++) {
            // 几项相加的结果
            const res = Number(arrPrice[i]) + Number(arrPrice[j]);
            // 如果结果大于或等于满减值，符合条件
            if (res >= total) {
                // 在showName里添加产品名信息
                // 在showTotal里添加组合总价
                showName.push(arrName[i] + '(' + arrPrice[i] + ')' + '+' + arrName[j] + '(' + arrPrice[j] + ')');
                showTotal.push(res);
            }
        }
    }
    // console.log(showName, showTotal);
    // 拷贝组合总价的数组  用于排序
    for (let i = 0; i < showTotal.length; i++) {
        copyShow.push(showTotal[i]);
    }
    // 判断是否能满足 设置的展示项
    if (resNum > showTotal.length) {
        resNum = showTotal.length
    }
    copyShow.sort(sortNumber);
    // console.log(copyShow);
    // 找出总价最小值对应的resNum项产品名
    let resName = [];
    for (let i = 0; i < showTotal.length; i++) {
        for (let j = 0; j < resNum; j++) {
            if (copyShow[j] == showTotal[i]) {
                resName.push(showName[i]);
            }
        }
    }

    //  展示符合条件的组合 
    let showList = '';
    if (resName.length) {
        for (let i = 0; i < resName.length; i++) {
            showList += '<tr>' +
                '<td>' + resName[i] + '</td>' +
                '<td>' + copyShow[i] + '</td>' +
                '</tr>'
        }
    } else {
        showList = '<tr>' +
            '<td>空</td>' +
            '<td>空</td>' +
            '</tr>'
    }
    // 渲染页面
    $id('showList').innerHTML = showList
}
// 排序执行方法
function sortNumber(a, b) {
    return a - b
}